//###################################
//#     Windows客户端测试代码        #
//###################################


// #define _CRT_SECURE_NO_WARNINGS 1
// #include <iostream>
// #include <string>
// #include <cstring>
// #include <thread>
// #include <WinSock2.h>

// #pragma warning(disable:4996) //去掉4996报警

// #pragma comment(lib, "ws2_32.lib") //引用套接字库
// using namespace std;

// struct _socket //打包网络信息
// {
//     string _ip;
//     uint16_t _port;
//     SOCKET _sock;

//     _socket(string ip, uint16_t port,SOCKET sock)
//         :_ip(ip)
//         , _port(port)
//         , _sock(sock)
//     {}
// };

// void Reception(_socket sock) //接收信息
// {

//     while (true)
//     {
//         struct sockaddr_in temp;
//         const int size = 2048;
//         char buf[size] = { 0 };
//         int locallen = sizeof(temp);
//         int ret = recvfrom(sock._sock, buf, size - 1, 0, (struct sockaddr*)(&temp), &locallen); //接收服务器的响应
//         if (ret > 0)
//         {
//             buf[size - 1] = '\0';
//             std::cout << buf << std::endl;
//         }
//     }
// }

// void Send(_socket sock)
// {
//     struct sockaddr_in local;
//     memset(&local, 0, sizeof(local));
//     local.sin_family = AF_INET;
//     local.sin_port = htons(sock._port);
//     local.sin_addr.s_addr = inet_addr(sock._ip.c_str()); ///ip已经处理过了

//     std::string str;
//     while (true)
//     {
//         //std::cerr << "[client-668]# ";
//         std::getline(std::cin, str);
//         sendto(sock._sock, str.c_str(), str.size(), 0, (struct sockaddr*)(&local), sizeof(local)); //向服务器发送数据
//     }

// }

// static void usage(const char* port)
// {
//     std::cout << "USAGE:\n\t" << port << " serverip serverport\n" << std::endl;
// }

// int main(int argc, char* argv[])
// {
//     WSADATA WSAData; //声明使用的数据

//     if (WSAStartup(MAKEWORD(2, 2), &WSAData) != 0) //数据是否匹配
//     {
//         std::cerr << "init error" << std::endl;
//         return -1;
//     }

//     if (argc == 2 || argc > 3)
//     {
//         usage(argv[0]);
//         exit(-2);
//     }

//     //默认ip和port端口
//     std::string ip("8.134.110.23");
//     const uint16_t port = atoi("8088");

//     if (argc == 3)
//     {
//         std::string ip = argv[1];
//         const uint16_t port = atoi(argv[2]);
//     }


//     SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0);
//     if (sock < 0)
//     {
//         std::cout << "create socket error: " << strerror(errno) << std::endl;
//         exit(-3);
//     }
//     _socket sk(ip, port,sock); //打包网络信息

//     thread _p(Send, sk);

//     thread _c(Reception, sk);
//     cout << "欢迎使用！输入任意文字回车完成发送！(没有输入提示！)" << endl;

//     _p.join();
//     _c.join();

//     closesocket(sock); //关闭套接字文件描述符
//     WSACleanup(); //清理使用的网络资源
// }